using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("ZonePlay")]
	public class ZonePlay : Zone
	{
		public int m_MaxSlots => method_2<int>("m_MaxSlots");

		public static float DEFAULT_TRANSITION_TIME => MonoClass.smethod_6<float>(TritonHs.MainAssemblyPath, "", "ZonePlay", "DEFAULT_TRANSITION_TIME");

		public static float PHONE_CARD_SCALE => MonoClass.smethod_6<float>(TritonHs.MainAssemblyPath, "", "ZonePlay", "PHONE_CARD_SCALE");

		public List<float> PHONE_WIDTH_MODIFIERS => method_3<Class250<float>>("PHONE_WIDTH_MODIFIERS")?.method_25();

		public int m_slotMousedOver => method_2<int>("m_slotMousedOver");

		public float m_slotWidth => method_2<float>("m_slotWidth");

		public float m_transitionTime => method_2<float>("m_transitionTime");

		public ZonePlay(IntPtr address, string className)
			: base(address, className)
		{
		}

		public ZonePlay(IntPtr address)
			: this(address, "ZonePlay")
		{
		}

		public void Awake()
		{
			method_8("Awake");
		}

		public float GetTransitionTime()
		{
			return method_11<float>("GetTransitionTime", Array.Empty<object>());
		}

		public void SetTransitionTime(float transitionTime)
		{
			method_8("SetTransitionTime", transitionTime);
		}

		public void ResetTransitionTime()
		{
			method_8("ResetTransitionTime");
		}

		public void SortWithSpotForHeldCard(int slot)
		{
			method_8("SortWithSpotForHeldCard", slot);
		}

		public int GetSlotMousedOver()
		{
			return method_11<int>("GetSlotMousedOver", Array.Empty<object>());
		}

		public float GetSlotWidth()
		{
			return method_11<float>("GetSlotWidth", Array.Empty<object>());
		}

		public Vector3 GetCardPosition(Card card)
		{
			return method_10<Vector3>("GetCardPosition", new Class276.Enum20[1] { Class276.Enum20.Class }, new object[1] { card });
		}

		public Vector3 GetCardPosition(int index)
		{
			return method_10<Vector3>("GetCardPosition", new Class276.Enum20[1] { Class276.Enum20.I4 }, new object[1] { index });
		}

		public new bool CanAcceptTags(int controllerId, TAG_ZONE zoneTag, TAG_CARDTYPE cardType)
		{
			return method_11<bool>("CanAcceptTags", new object[3] { controllerId, zoneTag, cardType });
		}

		public new void UpdateLayout()
		{
			method_8("UpdateLayout");
		}

		public bool CanAnimateCard(Card card)
		{
			return method_11<bool>("CanAnimateCard", new object[1] { card });
		}
	}
}
